// pages/test/test.js
const db = wx.cloud.database(); // 获取云数据库引用
const photosCollection = db.collection('photos'); // 获取照片信息集合的引用

Page({
  data: {
    longitude: 113.48471872519094,
    latitude: 23.174851080418577,
    scale: 14,
    markers: [], // 存储marker数据
    photoUrls: {}, // 存储照片URL与fileID的映射
    userId: '' // 存储当前用户ID
  },

  onLoad: function() {
    this.getUserId(); // 页面加载时获取用户ID
  },

  getUserId: function() {
    const userId = wx.getStorageSync('userId');
    console.log('获取到的用户ID:', userId); // 调试日志
    if (userId) {
      this.setData({ userId: userId });
      this.loadPhotoData(userId); // 加载当前用户的照片数据
    } else {
      wx.showToast({
        title: '未能获取用户ID',
        icon: 'none'
      });
    }
  },

  loadPhotoData: function(userId) {
    photosCollection.where({
      userId: userId
    }).get({
      success: res => {
        console.log('照片集合数据:', res.data); // 调试日志
        const markers = res.data.map((item, index) => ({
          id: index,
          stringId: item._id,
          latitude: parseFloat(item.location.latitude),
          longitude: parseFloat(item.location.longitude),
          width: 50,
          height: 50,
          iconPath: '/resources/image/location.png',
        }));
        this.setData({
          markers: markers,
        });
        console.log('设置的markers:', markers); // 调试日志
        this.getTempPhotoURLs(res.data).then(photosWithUrls => {
          console.log('照片URL映射:', photosWithUrls); // 调试日志
          const photoUrls = photosWithUrls.reduce((acc, photo) => {
            console.log('映射照片:', photo); // 调试日志
            acc[photo._id] = photo.tempFileURL;
            return acc;
          }, {});
          this.setData({
            photoUrls: photoUrls,
          });
          console.log('设置的photoUrls:', photoUrls); // 调试日志
        }).catch(err => {
          console.error('获取照片URL失败:', err);
          wx.showToast({
            title: '获取照片URL失败',
            icon: 'none',
            duration: 2000
          });
        });
      },
      fail: err => {
        console.error('查询照片信息失败:', err);
        wx.showToast({
          title: '加载照片数据失败',
          icon: 'none',
        });
      },
    });
  },

  onMarkerTap: function(e) {
    const markerId = e.detail.markerId;
    console.log('点击的markerId:', markerId); // 调试日志
    const marker = this.data.markers.find(m => m.id === markerId);
    if (marker) {
      const photoUrl = this.data.photoUrls[marker.stringId]; // 根据marker的stringId获取照片URL
      console.log('找到的photoUrl:', photoUrl); // 调试日志
      if (photoUrl) {
        wx.previewImage({
          urls: [photoUrl],
        });
      } else {
        wx.showToast({
          title: '照片加载失败',
          icon: 'none',
        });
      }
    }
  },

  getTempPhotoURL: function(fileID) {
    return new Promise((resolve, reject) => {
      wx.cloud.getTempFileURL({
        fileList: [fileID],
        success: res => {
          console.log('临时文件URL获取成功:', res.fileList); // 调试日志
          if (res.fileList.length > 0 && res.fileList[0].tempFileURL) {
            resolve(res.fileList[0].tempFileURL);
          } else {
            reject(new Error('获取临时文件URL失败'));
          }
        },
        fail: err => {
          reject(err);
        }
      });
    });
  },

  getTempPhotoURLs: function(photos) {
    let promises = photos.map(photo => {
      console.log('处理照片:', photo); // 调试日志
      return this.getTempPhotoURL(photo.fileID).then(tempFileURL => {
        console.log('获取到的tempFileURL:', tempFileURL); // 调试日志
        return { ...photo, tempFileURL: tempFileURL };
      });
    });
    return Promise.all(promises).catch(err => {
      console.error('获取照片URLs失败:', err);
      throw err; // 向上层抛出错误
    });
  },
});
